MULTILAYERITY WITHIN MULTILAYERITY?

Similarity among Structural and Ad Hoc Partitions

By Moses Boudourides & Sergios Lenis

Sunbelt 2015




The Python scripts for all the computations displayed here are available at:

https://github.com/mboudour/GraphMultilayerity


Basic Definitions

Examples of Partitions

Similarity of Partitions


3-LAYER GRAPHS

1. Syntetic 3-Layer Graphs in the Triangular Topology
2. Syntetic 3-Layer Graphs in the 2-Path Topology
3. Analytic 3-Layer Graphs in the Triangular Topology
4. Analytic 3-Layer Graphs in the 2-Path Topology
5. Temporal Graphs with 3 Slices
6. A Sierpinski (Fractal) Self-Similar Graph

1. Synthetic 3-Layer Graphs in the Triangular Topology

In [1]:
%matplotlib inline
from syntheticThreeLayerGraph import synthetic_three_level, plot_graph

n1=n2=n3=50
p1=p2=p3=0.01
q1=q2=q3=0.01

G,J,FF,DD,edgeList = synthetic_three_level(n1,n2,n3,p1,p2,p3,q1,q2,q3,no_isolates=False)
pos=plot_graph(G,J,FF,DD,n1,n2,n3,d1=1,d2=10.,d3=0.8,nodesize=50,withlabels=False,edgelist=edgeList,layout=False,b_alpha=0.25)
In [2]:
from threeLayerCommunityParition import create_node_comm_graph, plot_graph

broken_graph,broken_partition,npartition = create_node_comm_graph(G,J.nodes(),FF.nodes(),DD.nodes())
plot_graph(G,broken_graph,broken_partition,npartition,J.nodes(),FF.nodes(),DD.nodes(),d1=1.4,d2=5.,d3=0.8,withlabels=False,nodesize=100,layout=False)
In [3]:
from threeLayerConnComponentsPartition import create_node_conncomp_graph, plot_graph

broken_graph,broken_partition,npartition = create_node_conncomp_graph(G,J.nodes(),FF.nodes(),DD.nodes())
plot_graph(G,broken_graph,broken_partition,npartition,J.nodes(),FF.nodes(),DD.nodes(),d1=1.4,d2=5.,d3=0.8,withlabels=False,nodesize=100,layout=False)
In [4]:
from threeLayer3AttributesPartition import create_node_3attri_graph, plot_graph

r1=r2=r3=0.333

broken_graph,broken_partition,npartition = create_node_3attri_graph(G,J.nodes(),FF.nodes(),DD.nodes(),r1,r2,r3)
plot_graph(G,broken_graph,broken_partition,npartition,J.nodes(),FF.nodes(),DD.nodes(),d1=1.4,d2=5.,d3=0.8,withlabels=False,nodesize=100,layout=False)

2. Synthetic 3-Layer Graphs in the 2-Path Topology

In [5]:
from syntheticThreeLayerGraph_l import synthetic_three_level, plot_graph

n1=n2=n3=50
p1=p2=p3=0.01
q1=q2=q3=0.01

G,J,FF,DD,edgeList = synthetic_three_level(n1,n2,n3,p1,p2,p3,q1,q2,q3,no_isolates=False)
pos=plot_graph(G,J,FF,DD,n1,n2,n3,d1=2,d2=3.,nodesize=50,withlabels=False,edgelist=edgeList,layout=False,b_alpha=0.25)
In [6]:
from threeLayerCommunityParition import create_node_comm_graph, plot_graph_stack

broken_graph,broken_partition,npartition = create_node_comm_graph(G,J.nodes(),FF.nodes(),DD.nodes())
plot_graph_stack(G,broken_graph,broken_partition,npartition,J.nodes(),FF.nodes(),DD.nodes(),d1=1.4,d2=5.,d3=0.8,withlabels=False,nodesize=100,layout=False)
In [7]:
from threeLayerConnComponentsPartition import create_node_conncomp_graph, plot_graph_stack

broken_graph,broken_partition,npartition = create_node_conncomp_graph(G,J.nodes(),FF.nodes(),DD.nodes())
plot_graph_stack(G,broken_graph,broken_partition,npartition,J.nodes(),FF.nodes(),DD.nodes(),d1=1.4,d2=5.,d3=0.8,withlabels=False,nodesize=100,layout=False)
In [8]:
from threeLayer3AttributesPartition import create_node_3attri_graph, plot_graph_stack

r1=r2=r3=0.333

broken_graph,broken_partition,npartition = create_node_3attri_graph(G,J.nodes(),FF.nodes(),DD.nodes(),r1,r2,r3)
plot_graph_stack(G,broken_graph,broken_partition,npartition,J.nodes(),FF.nodes(),DD.nodes(),d1=1.4,d2=5.,d3=0.8,withlabels=False,nodesize=100,layout=False)

3. Analytic 3-Layer Graphs in the Triangular Topology

In [9]:
from analyticThreeLayerGraph import analyticThreeLayerGraph, plot_graph

n = 150
p = 0.1
r1 = r2 = r3 = 0.333

G, layer1, layer2, layer3, edgeList = analyticThreeLayerGraph(n,p,r1,r2,r3,G_isolates=True)
plot_graph(G,layer1,layer2,layer3,d1=1.5,d2=5.,d3=0.8,nodesize=100,withlabels=False,edgelist=edgeList,layout=False,alpha=0.07)
In [10]:
from threeLayerCommunityParition import create_node_comm_graph, plot_graph

broken_graph,broken_partition,npartition = create_node_comm_graph(G,layer1,layer2,layer3)
plot_graph(G,broken_graph,broken_partition,npartition,layer1,layer2,layer3,d1=1.4,d2=5.,d3=0.8,withlabels=False,nodesize=100,layout=False)
In [11]:
from threeLayerConnComponentsPartition import create_node_conncomp_graph, plot_graph

broken_graph,broken_partition,npartition = create_node_conncomp_graph(G,layer1,layer2,layer3)
plot_graph(G,broken_graph,broken_partition,npartition,layer1,layer2,layer3,d1=1.4,d2=5.,d3=0.8,withlabels=False,nodesize=100,layout=False)
In [12]:
from threeLayer3AttributesPartition import create_node_3attri_graph, plot_graph

r1=r2=r3=0.333

broken_graph,broken_partition,npartition = create_node_3attri_graph(G,layer1,layer2,layer3,r1,r2,r3)
plot_graph(G,broken_graph,broken_partition,npartition,layer1,layer2,layer3,d1=1.4,d2=5.,d3=0.8,withlabels=False,nodesize=100,layout=False)

4. Analytic 3-Layer Graphs in the 2-Path Topology

In [13]:
from analyticThreeLayerGraph_l import analyticThreeLayerGraph, plot_graph

n = 150
p = 0.01
r1 = 0.333
r2 = 0.333
r3 = 0.333

G, layer1, layer2, layer3, edgeList = analyticThreeLayerGraph(n,p,r1,r2,r3,G_isolates=True)
plot_graph(G,layer1,layer2,layer3,d1=3.5,d2=5.,d3=0.8,nodesize=100,withlabels=False,edgelist=edgeList,layout=False,alpha=0.2)
In [14]:
from threeLayerCommunityParition import create_node_comm_graph, plot_graph_stack

broken_graph,broken_partition,npartition = create_node_comm_graph(G,J.nodes(),FF.nodes(),DD.nodes())
plot_graph_stack(G,broken_graph,broken_partition,npartition,J.nodes(),FF.nodes(),DD.nodes(),d1=1.4,d2=5.,d3=0.8,withlabels=False,nodesize=100,layout=False)
In [15]:
from threeLayerConnComponentsPartition import create_node_conncomp_graph, plot_graph_stack

broken_graph,broken_partition,npartition = create_node_conncomp_graph(G,J.nodes(),FF.nodes(),DD.nodes())
plot_graph_stack(G,broken_graph,broken_partition,npartition,J.nodes(),FF.nodes(),DD.nodes(),d1=1.4,d2=5.,d3=0.8,withlabels=False,nodesize=100,layout=False)
In [16]:
from threeLayer3AttributesPartition import create_node_3attri_graph, plot_graph_stack

r1=r2=r3=0.333

broken_graph,broken_partition,npartition = create_node_3attri_graph(G,J.nodes(),FF.nodes(),DD.nodes(),r1,r2,r3)
plot_graph_stack(G,broken_graph,broken_partition,npartition,J.nodes(),FF.nodes(),DD.nodes(),d1=1.4,d2=5.,d3=0.8,withlabels=False,nodesize=100,layout=False)

5. Temporal Graph with 3 Slices

In [17]:
%matplotlib inline
from syntheticThreeLayerGraph_time import synthetic_three_level, plot_graph

p1=p2=p3=0.1
n=50
G,J,FF,DD,JFD,edgeList = synthetic_three_level(n,p1,p2,p3,J_isolates=True,F_isolates=True,D_isolates=True)
#print edgeList
created_pos=plot_graph(n,G,J,FF,DD,JFD,d1=2.,d2=3.,nodesize=50,withlabels=False,edgelist=edgeList,layout=False,b_alpha=0.05) #d=0.5 #d

6. A Sierpinski (Fractal) Self-Similar Graph

In [18]:
run SierpinskiCantorGraph.py